cmake_minimum_required(VERSION 3.14)
project(te_spdlog_dlls)

# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 强制使用多线程 DLL 运行时库 (/MD)，即使在 Debug 配置下
if(MSVC)
    # set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
    set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL")
endif()

if(MSVC)
    add_compile_options(/permissive- /Zc:__cplusplus /utf-8)
endif()

add_compile_definitions(MY_LOG_DIR="${MY_LOG_DIR}")

# 查找 spdlog 库
find_package(spdlog REQUIRED)

#======================= 添加共享库目标 mylib
set(MY_LIB my_spdlog_lib)
add_library(${MY_LIB} SHARED mylibrary.cpp mylibrary.h)

#--------- 使用自定义函数配置导出头文件
my_config_export_header(${MY_LIB} ${MY_EXPORTS_DIR})
#--------- 链接 spdlog 库到 mylib
target_link_libraries(${MY_LIB} PRIVATE spdlog::spdlog)

#======================= 添加可执行文件
set(MY_EXE ${PROJECT_NAME})
add_executable(${MY_EXE} main.cpp)

# 链接 spdlog 库和 mylib
# target_link_libraries(${MY_EXE} PRIVATE spdlog::spdlog)
target_link_libraries(${MY_EXE} 
    PRIVATE spdlog::spdlog ${MY_LIB}
)

# ----- 拷贝依赖的 DLL 到构建目录
my_cp_dlls(${MY_EXE})

# 打印目标的宏定义
my_prt_target_definitions(${MY_EXE})
